As it is written, calling fact( -1 )
int fact( int N ) { if ( N == 0 ) return 1; else return N * fact( N-1 ) ; }
Defensive programming is when the programmer anticipates
problems and writes code to deal with them.
To avoid the disaster a negative parameter would cause,
sometimes fact()
is written like this:
int fact( int N ) { if ( N <= 0 ) return 1; else return N * fact( N-1 ) ; }
But, according to the math-like definition, this is not correct.
The value of factorial( -1 )
Sometimes the method is written to throw an exception when an illegal argument is detected. But this adds complication since any caller is now required to deal with the exception (or pass it on to its caller.)
Possibly the best solution is to write factorial()